プログラムの設計論⑦ 拡張機能をデザインする